package com.say.utils;


import com.alibaba.fastjson.JSONObject;
import com.say.bean.domain.User;
import com.say.utils.weixin.WeixinUtil;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 *
 * 类说明：用户工具类
 */
public class UserHandlerUtil {
	private static Logger log = LoggerFactory.getLogger(UserHandlerUtil.class);
	public static User getUserInfo(String accessToken, String openId) {
		User user = new User();        
		// 拼接请求地址    
		String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";    
		requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);    
		// 获取用户信息    
		JSONObject jsonObject = WeixinUtil.httpRequest(requestUrl, "GET", null);  
		log.info(" 状态"+jsonObject);
		if (null != jsonObject) {      
			try {        
				// 用户的标识       
				user.setOpenId(jsonObject.getString("openid"));
				// 关注状态（1是关注，0是未关注），未关注时获取不到其余信息  
				log.info(" 关注状态（1是关注，0是未关注）"+jsonObject.getIntValue("subscribe") );
				user.setSubscribe(jsonObject.getIntValue("subscribe"));        
				// 用户关注时间        
				log.info(" 用户关注时间"+jsonObject.getIntValue("subscribe_time") );
				//user.setSubscribeTime(jsonObject.getString("subscribe_time"));        
				// 昵称        
				user.setWxName(jsonObject.getString("nickname"));        
				// 用户的性别（1是男性，2是女性，0是未知）        
				user.setSex(jsonObject.getIntValue("sex"));        
				// 用户所在国家       
				user.setCountry(jsonObject.getString("country"));        
				// 用户所在省份        
				user.setProvince(jsonObject.getString("province"));        
				// 用户所在城市       
				user.setCity(jsonObject.getString("city"));        
				// 用户的语言，简体中文为zh_CN        
				user.setLanguage(jsonObject.getString("language"));        
				// 用户头像        
				user.setWeixinPhoto(jsonObject.getString("headimgurl"));
				String unionid =jsonObject.getString("unionid");
				if(unionid!=null){
					user.setUnionid(unionid);
				}
				} catch (Exception e) {        
					if (0 == user.getSubscribe()) {          
						log.error("用户{}已取消关注", user.getOpenId());        
						} else {
							int errorCode = jsonObject.getIntValue("errcode");          
							String errorMsg = jsonObject.getString("errmsg");          
							log.error("获取用户信息失败 errcode:{} errmsg:{}", errorCode, errorMsg);        
							}      
					}    
			}
		    log.error("获取微信公众号用户信息{}", user);
		    return user;
			}
}
